home *** CD-ROM | disk | FTP | other *** search
- package mx.messaging.channels
- {
- import flash.events.ErrorEvent;
- import flash.events.Event;
- import flash.events.IOErrorEvent;
- import flash.events.SecurityErrorEvent;
- import flash.events.TimerEvent;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- import flash.net.URLRequestHeader;
- import flash.net.URLVariables;
- import mx.core.mx_internal;
- import mx.messaging.Channel;
- import mx.messaging.MessageAgent;
- import mx.messaging.MessageResponder;
- import mx.messaging.errors.ChannelError;
- import mx.messaging.errors.InvalidChannelError;
- import mx.messaging.errors.MessageSerializationError;
- import mx.messaging.messages.HTTPRequestMessage;
- import mx.messaging.messages.IMessage;
- import mx.utils.Translator;
-
- use namespace mx_internal;
-
- public class DirectHTTPChannel extends Channel
- {
- private static var clientCounter:uint;
-
- private static const TRANSLATOR:Translator = Translator.getDefaultInstanceFor(DirectHTTPChannel);
-
- mx_internal var clientId:String;
-
- public function DirectHTTPChannel(param1:String, param2:String = "")
- {
- super(param1,param2);
- if(param2.length > 0)
- {
- throw new InvalidChannelError(TRANSLATOR.textOf("noURIAllowed"));
- }
- mx_internal::clientId = "DirectHTTPChannel" + clientCounter++;
- }
-
- override public function get connected() : Boolean
- {
- return true;
- }
-
- override public function get protocol() : String
- {
- return "http";
- }
-
- override protected function connectTimeoutHandler(param1:TimerEvent) : void
- {
- }
-
- override protected function getMessageResponder(param1:MessageAgent, param2:IMessage) : MessageResponder
- {
- return new DirectHTTPMessageResponder(param1,param2,this,new URLLoader());
- }
-
- override public function setCredentials(param1:String, param2:MessageAgent = null) : void
- {
- throw new ChannelError(TRANSLATOR.textOf("authenticationNotSupported"));
- }
-
- mx_internal function createURLRequest(param1:IMessage) : URLRequest
- {
- var _loc2_:HTTPRequestMessage = null;
- var _loc3_:URLRequest = null;
- var _loc4_:String = null;
- var _loc5_:String = null;
- var _loc6_:Boolean = false;
- var _loc7_:Object = null;
- var _loc8_:Array = null;
- var _loc9_:URLRequestHeader = null;
- var _loc10_:String = null;
- var _loc11_:URLVariables = null;
- var _loc12_:Object = null;
- var _loc13_:String = null;
- _loc2_ = HTTPRequestMessage(param1);
- _loc3_ = new URLRequest();
- _loc4_ = _loc2_.url;
- _loc5_ = null;
- _loc3_.contentType = _loc2_.contentType;
- _loc6_ = _loc3_.contentType == HTTPRequestMessage.CONTENT_TYPE_XML || _loc3_.contentType == HTTPRequestMessage.CONTENT_TYPE_SOAP_XML;
- _loc7_ = _loc2_.httpHeaders;
- if(_loc7_)
- {
- _loc8_ = [];
- for(_loc10_ in _loc7_)
- {
- _loc9_ = new URLRequestHeader(_loc10_,_loc7_[_loc10_]);
- _loc8_.push(_loc9_);
- }
- _loc3_.requestHeaders = _loc8_;
- }
- if(!_loc6_)
- {
- _loc11_ = new URLVariables();
- _loc12_ = _loc2_.body;
- for(_loc13_ in _loc12_)
- {
- _loc11_[_loc13_] = _loc2_.body[_loc13_];
- }
- _loc5_ = _loc11_.toString();
- }
- if(_loc2_.method == HTTPRequestMessage.POST_METHOD || _loc6_)
- {
- _loc3_.method = "POST";
- if(_loc3_.contentType == HTTPRequestMessage.CONTENT_TYPE_FORM)
- {
- _loc3_.data = _loc5_;
- }
- else
- {
- _loc3_.data = _loc2_.body;
- }
- }
- else if(Boolean(_loc5_) && _loc5_ != "")
- {
- _loc4_ += _loc4_.indexOf("?") > -1 ? "&" : "?";
- _loc4_ = _loc4_ + _loc5_;
- }
- _loc3_.url = _loc4_;
- return _loc3_;
- }
-
- override protected function internalSend(param1:MessageResponder) : void
- {
- var httpMsgResp:DirectHTTPMessageResponder = null;
- var urlRequest:URLRequest = null;
- var urlLoader:URLLoader = null;
- var msgResp:MessageResponder = param1;
- httpMsgResp = DirectHTTPMessageResponder(msgResp);
- try
- {
- urlRequest = mx_internal::createURLRequest(httpMsgResp.message);
- }
- catch(e:MessageSerializationError)
- {
- httpMsgResp.agent.fault(e.fault,httpMsgResp.message);
- return;
- }
- urlLoader = httpMsgResp.urlLoader;
- urlLoader.addEventListener(ErrorEvent.ERROR,httpMsgResp.errorHandler);
- urlLoader.addEventListener(IOErrorEvent.IO_ERROR,httpMsgResp.errorHandler);
- urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,httpMsgResp.securityErrorHandler);
- urlLoader.addEventListener(Event.COMPLETE,httpMsgResp.completeHandler);
- urlLoader.load(urlRequest);
- }
-
- override protected function internalConnect() : void
- {
- connectSuccess();
- }
- }
- }
-
- import flash.events.ErrorEvent;
- import flash.events.Event;
- import flash.events.IOErrorEvent;
- import flash.events.SecurityErrorEvent;
- import flash.net.URLLoader;
- import mx.core.mx_internal;
- import mx.messaging.MessageAgent;
- import mx.messaging.MessageResponder;
- import mx.messaging.messages.AcknowledgeMessage;
- import mx.messaging.messages.ErrorMessage;
- import mx.messaging.messages.HTTPRequestMessage;
- import mx.messaging.messages.IMessage;
- import mx.utils.Translator;
-
- use namespace mx_internal;
-
- class DirectHTTPMessageResponder extends MessageResponder
- {
- private static const TRANSLATOR:Translator = Translator.getMessagingInstance();
-
- public var urlLoader:URLLoader;
-
- private var clientId:String;
-
- public function DirectHTTPMessageResponder(param1:MessageAgent, param2:IMessage, param3:DirectHTTPChannel, param4:URLLoader)
- {
- super(param1,param2,param3);
- this.urlLoader = param4;
- clientId = param3.mx_internal::clientId;
- }
-
- public function completeHandler(param1:Event) : void
- {
- var _loc2_:AcknowledgeMessage = null;
- result(null);
- _loc2_ = new AcknowledgeMessage();
- _loc2_.clientId = clientId;
- _loc2_.correlationId = message.messageId;
- _loc2_.body = URLLoader(param1.target).data;
- agent.acknowledge(_loc2_,message);
- }
-
- override protected function requestTimedOut() : void
- {
- var _loc1_:AcknowledgeMessage = null;
- urlLoader.removeEventListener(ErrorEvent.ERROR,errorHandler);
- urlLoader.removeEventListener(IOErrorEvent.IO_ERROR,errorHandler);
- urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
- urlLoader.removeEventListener(Event.COMPLETE,completeHandler);
- urlLoader.close();
- status(null);
- _loc1_ = new AcknowledgeMessage();
- _loc1_.clientId = clientId;
- _loc1_.correlationId = message.messageId;
- _loc1_.headers[AcknowledgeMessage.ERROR_HINT_HEADER] = true;
- agent.acknowledge(_loc1_,message);
- agent.fault(createRequestTimeoutErrorMessage(),message);
- }
-
- public function errorHandler(param1:Event) : void
- {
- var _loc2_:AcknowledgeMessage = null;
- var _loc3_:ErrorMessage = null;
- var _loc4_:* = null;
- status(null);
- _loc2_ = new AcknowledgeMessage();
- _loc2_.clientId = clientId;
- _loc2_.correlationId = message.messageId;
- _loc2_.headers[AcknowledgeMessage.ERROR_HINT_HEADER] = true;
- agent.acknowledge(_loc2_,message);
- _loc3_ = new ErrorMessage();
- _loc3_.clientId = clientId;
- _loc3_.correlationId = message.messageId;
- _loc3_.faultCode = "Server.Error.Request";
- _loc3_.faultString = TRANSLATOR.textOf("httpRequestError");
- _loc4_ = param1.toString();
- if(message is HTTPRequestMessage)
- {
- _loc4_ += ". URL: ";
- _loc4_ = _loc4_ + HTTPRequestMessage(message).url;
- }
- _loc3_.faultDetail = TRANSLATOR.textOf("httpRequestError.details",_loc4_);
- _loc3_.rootCause = param1;
- agent.fault(_loc3_,message);
- }
-
- public function securityErrorHandler(param1:Event) : void
- {
- var _loc2_:AcknowledgeMessage = null;
- var _loc3_:ErrorMessage = null;
- status(null);
- _loc2_ = new AcknowledgeMessage();
- _loc2_.clientId = clientId;
- _loc2_.correlationId = message.messageId;
- _loc2_.headers[AcknowledgeMessage.ERROR_HINT_HEADER] = true;
- agent.acknowledge(_loc2_,message);
- _loc3_ = new ErrorMessage();
- _loc3_.clientId = clientId;
- _loc3_.correlationId = message.messageId;
- _loc3_.faultCode = "Channel.Security.Error";
- _loc3_.faultString = TRANSLATOR.textOf("securityError");
- _loc3_.faultDetail = TRANSLATOR.textOf("securityError.details",message.destination);
- _loc3_.rootCause = param1;
- agent.fault(_loc3_,message);
- }
- }
-